using System.ComponentModel;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using RanchBuddy.Core.Domain.Impl;

namespace RanchBuddy.Core.Domain
{
    public interface ICompanyAccountType : INotifyPropertyChanging, INotifyPropertyChanged
    {
        [Column(Storage = "_CompanyAccountTypeID", AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true, UpdateCheck = UpdateCheck.Never)]
        int CompanyAccountTypeID { get; set; }

        [Column(Storage = "_Name", DbType = "VarChar(30) NOT NULL", CanBeNull = false, UpdateCheck = UpdateCheck.Never)]
        string Name { get; set; }

        [Column(Storage = "_CreateDate", DbType = "SmallDateTime", UpdateCheck = UpdateCheck.Never)]
        System.Nullable<System.DateTime> CreateDate { get; set; }

        [Column(Storage = "_Timestamp", AutoSync = AutoSync.Always, DbType = "rowversion NOT NULL", CanBeNull = false, IsDbGenerated = true, IsVersion = true, UpdateCheck = UpdateCheck.Never)]
        System.Data.Linq.Binary Timestamp { get; set; }

        [Column(Storage = "_CompanyTypeID", DbType = "Int", UpdateCheck = UpdateCheck.Never)]
        System.Nullable<int> CompanyTypeID { get; set; }

        [Association(Name = "CompanyAccountType_CompanyAccount", Storage = "_CompanyAccounts", ThisKey = "CompanyAccountTypeID", OtherKey = "CompanyAccountTypeID")]
        EntitySet<CompanyAccount> CompanyAccounts { get; set; }

        event PropertyChangingEventHandler PropertyChanging;
        event PropertyChangedEventHandler PropertyChanged;
    }
}